home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 7
/
Amiga Format AFCD07 (Dec 1996, Issue 91).iso
/
serious
/
shareware
/
3d
/
guiblobs
/
guiblobs.doc
< prev
next >
Wrap
Text File
|
1992-09-02
|
10KB
|
221 lines
Welcome to GUIBlobs, by Chris Underwood (CMU).
GUIBlobs is a program to create weirdful blobby pictures and animations. The
best way to get to know the program is to play with it, so load it up and
remember that you can press Left-Amiga-A to flip it to the front or back at
almost any time (not during load/save/file requestors). At any time Ctrl-C
should quit the program and dump you back into Workbench.
Quick start quide:
Wanna make it do something? Click on the text that says 'New blobject' and
you'll get a grid appear. Click where you want the center of a blobject, then
move the mouse and click again to set the radius.
Do this again, and make sure the circles overlap a fair way or you'll get a
very dull picture. Also ensure that the circles aren't too big (a couple of
grid squares is enough for the moment). Larger blobs take longer to render.
Now click the 'Render frame' button. In a short while you'll see your blob
picture. Where the blobjects overlap you can see that they have kind of
spludged into each other. A save requestor pops up to save the image if you
want but you can tell it to smeg off if you don't need the image saving.
Quick anim guide:
Wanna create an anim? Make a couple of blobjects that aren't overlapping.
Click the 'Blob numbers on' button to show the ID numbers of each blob. Click
the 'Blobject screen to front' button to view the blob preview and decide
which blob is going to move. Click the 'Linear blob movement' button and enter
the number of the blob that is to move (probably 1 or 2). Now move the mouse
about and notice the line that is following. This line is the path the blob
will follow in the anim. Click somewhere where the blobs will collide later.
Now click the 'Linear blobject movement' button. Enter the other blob's ID
number and set the finish size with the mouse. Don't make it too big or too
small, just a grid square's difference on the original size.
Now click the 'Frames:' button. Enter how many frames you want in the final
anim. I usually use 20 here. Next click on 'Preview anim' and you will get
a look at what the anim will look like when rendered. If you are happy with
it all then click 'Frame name:' and enter a path and base frame name. The
default here is set up for my own HD and will probably need editing. A
possible example could be "df0:frame" which would save frames onto the
internal disk drive, under the names 'Frame0000' 'Frame0001' etc. Click the
'Render Anim' button to make the frames (This can take a while).
To see the anim, load up DPaintIII or greater (or some other animating tool)
and select 'Load picture' from the menus. Select the first frame and set the
number of pictures to load too. The anim will load in. Press '6' to ping-pong
the animation.
Button discriptions:
New blobject: Add a blobject to the blobscape. You may have up to 50 blobjects
at once.
Remove blobject: Delete an object from the blobscape. You will be prompted for
an object to delete. To cancel, enter an illegal number such
as -1.
Blobject screen to front: Move the preview screen to the front.
Linear blob movement: Set a path for a blob to follow.
Radial blob movement: Set finish size for a blobject.
Blob numbers: on/off: Toggles use of ID numbers on the blobscape screen.
Density range graph: on/off: Toggle the colour chart in the top left of the
rendered screen.
Anim render info: on/off: Toggle the info screen (not saved with the anim)
This screen appears only when making an anim.
Render quality: Speed and quality control. this changes the step at which the
blobscape is sampled for field density (explained later). A
step of 1 means once per pixel. This is the best quality. A
step of 2 means once per 2 pixels and will lead to blocky
(but 4 times quicker) renders. Ideal for previews. You can set
this sensibly up to about 10.
Differetial model: sine/linear: Setting this to Sine will make the blobs speed
up and slow down neatly at the start and end
of the anim. Ideal for ping-pong anims. Linear
makes the blobs move smothely from one end of
the anim to the other.
Grid: on/off: Toggles the grid on/off on the blobscape screen. Turn this off
if things get messy or you want a faster preview anim.
Threshold: Use this to set the drawing threshold. Valid values range between
0 and 1. More on the effect of this later.
Colour mapping: Cycle through the available colour mapping types. More on
these later.
Clear all blobjects: Just that.
Frames: Set the number of frames for an anim.
Frame name: The base filename used for anim frames.
Load blobscape: Load a previosly saved blob setup. This will preserve things
like the anim settings and prefs.
Save blobscape: Save the current blob data to disk. This will save prefs and
anim data too.
Preview anim: Show a preview of the current blob anim. This can be speeded up
by making sure that the grid is off, and blob numbers aren't
visible.
Render anim: Make each frame in turn, saving them to the base filename plus
a sequential number. All rendering can be stopped by holding
both mouse buttons down until the end of the current line.
Render frame: Draw a frame. If more than one exist then you will be prompted
for the frame number to draw.
Quit: Exit GUIBlobs.
How it works:
Each blob emits a field from it's centre. This field dropps off to nil at the
blob's radius. To calculate the field density at any point on the screen, we
add up the individual densities of all the blobs. Where the field density
is greater that a set threshold, a pixel is drawn. This pixel is mapped to
a colour using a mapping function applied to the density at the point.
Got that? Yes? Sad swot :-)
Nope? Thickie :-)
Threshold:
Changing this value changes how much of the blob is drawn. Low values result
in large blobs that are very stodgy (not quick to splurge into another blob).
Larger values make small blobs that take ages to render but are much more
splungey and will squlidge into another blob quite easily.
The inner circle of each blob on the blobscape screen shows an approximation
to where the blob will extend to. It is usually less than the radius (which
is the radius of the field, not the blob). This is only a guide.
Colour mapping:
There are threee types of colour mapping. I'll talk about each in turn and say
when they are most useful.
Old style mapping:
This is what I originally used in the program development. It is garanteed to
create some reasonable results as long as the threshold is quite low. This
maps the colours 1 to 15 linearly to the densities 0 to 1. Any density greater
than 1 is mapped to colour 15 (the brightest white). Since each blob
contributes a density of 1 at it's center, it is feasable that a lot of detail
where blobs overlap could be missed. Also, for high thresholds, the lower
value colours won't be used and the picture will be white-washed.
Fixed clipping:
The default (and probably the most generally useful. This maps the colours 1
to 15 to the densities between the threshold value and 1. This makes blobs on
their own look best, starting at very low colours and going to the brightest
shades in their centers. It still clips any densities over 1 to the highest
shade of white though, so if you have a few blobs overlapping together then
some detail may be missed.
Ranged mapping:
This ranges the colours between the threshold value and the maximum density
possible (also the same as the total number of blobs). This tends to work
best when lots of blobs are fully overlapping. On their own, blobs can look
too dark.
Inspiration:
This program ows a lot to POV-Ray. The documentation described the blob object
that is available and I had a play with it (the results are in the archive).
I also saw a Blitz2 demo that had a sort of primitave real time (5-7 fps)
animated 2D blob thing. I did some maths and decided that the GUIBlobs
program was feasable. A small hint to people who can program in real languages
(eg C, C++, Pascal, ML, Perl etc) - don't go back to Amos after proggin' in
your propper language, because you'll find yourself unable to get back into
real programming and will have to learn the language from scratch! Amos has
a weird effect on people - it is so easy to create wonderful graphic and sound
demos in short code that you won't even want to go back to other languages.
Unfortunaly, Amos lacks a few essential things: Pointer support, dynamic
memory allocation (this does sort of exist but it's very limited), functions
and non-bugged array mapping :-)
Bugs:
Probably too numerous to mention. I'm not really interested in carrying this
program any further because the code is a bit of a mess and I want to move
into a more modern language. There may be a Unix X version available in the
future, and perhaps a version for Win95 (not programmed by me though). Perhaps
I'll do somthing for RiscOS too, because it is such a fantastic OS. All this
said, I don't much want people to report bugs or suggestions for future
releases. If you want the source code for this then email me, and you can have
it. Likewise, any questions on usage can also be emailed to me. I should be
able to reply to all email.
Archive contents:
GUIBlobs Executable program
Blob.iff24 24 bit POV-Ray blob picture.
Blob.anim5 A short anim rendered with GUIBlobs and DPaint IV.
Blob.blob The anim's datafile. Load into GUIBlobs.
CMU.iff A blobby picture of my initials.
Blobs1.iff A blob picture.
Blobs2.iff Another blob picture.
GUIBlobs.readme This readme file.
Contact me at:
Chris Underwood
29 Sandpiper Drive
Worle
Weston super Mare
BS22 8UH
or (preferably) email me at:
csuwz@csv.warwick.ac.uk
Visit my web page at:
http://www.csv.warwick.ac.uk/~csuwz/
CMU